gusucode.com > 支持向量机工具箱 - LIBSVM OSU_SVM LS_SVM源码程序 > 支持向量机工具箱 - LIBSVM OSU_SVM LS_SVM\LS_SVMlab\demo_yinyang.m

    % Copyright (c) 2002,  KULeuven-ESAT-SCD, License & help @ http://www.esat.kuleuven.ac.be/sista/lssvmlab


disp('  This demo illustrates facilities of LS-SVMlab');
disp('  with respect to unsupervised learning.');

disp(' a demo dataset is generated...');
clear yin yang samplesyin samplesyang mema
% initiate variables and construct the data
nb = 25;
sig = .4;

% construct data
leng = 1;
for t=1:nb, 
  yin(t,:) = [2.*sin(t/nb*pi*leng) 2.*cos(.61*t/nb*pi*leng) (t/nb*sig)]; 
  yang(t,:) = [-2.*sin(t/nb*pi*leng) .45-2.*cos(.61*t/nb*pi*leng) (t/nb*sig)]; 
  samplesyin(t,:)  = [yin(t,1)+yin(t,3).*randn   yin(t,2)+yin(t,3).*randn];
  samplesyang(t,:) = [yang(t,1)+yang(t,3).*randn   yang(t,2)+yang(t,3).*randn];
end

% plot the data
figure; hold on
plot(samplesyin(:,1),samplesyin(:,2),'b+');
plot(samplesyang(:,1),samplesyang(:,2),'r*');
xlabel('X_1');
ylabel('X_2');
title('Structured dataset');
disp('  (press any key)');
pause

%
% kernel based Principal Component Analysis
%
disp('  extract the principal eigenvectors in feature space');
disp(' >> nb_pcs=5;'); nb_pcs = 5;
disp(' >> sig2 = .75;'); sig2 = .75;
disp(' >> [lam,U] = kpca([samplesyin;samplesyang],''RBF_kernel'',sig2,[],''eigs'',nb_pcs); ');
[lam,U] = kpca([samplesyin;samplesyang],'RBF_kernel',sig2,[],'eigs',nb_pcs);
disp('  (press any key)');
pause

%
% make a grid over the inputspace
%
disp(' make a grid over the inputspace:');
disp('>> Xax = -3:1:3; Yax = -3.2:1:3.2;'); Xax = -3:.2:3; Yax = -3.2:.2:3.2;
disp('>> [A,B] = meshgrid(Xax,Yax);'); [A,B] = meshgrid(Xax,Yax);
disp('>> grid = [reshape(A,prod(size(A)),1) reshape(B,1,prod(size(B)))'']; ');
grid = [reshape(A,prod(size(A)),1) reshape(B,1,prod(size(B)))'];


%
% compute projections of each point of the inputspace on the
% principal components
%
disp('  compute projections of each point of the inputspace on the  ');
disp('  principal components');
disp('>> k = kernel_matrix([samplesyin;samplesyang],''RBF_kernel'',sig2,grid)'';  ');
k = kernel_matrix([samplesyin;samplesyang],'RBF_kernel',sig2,grid)';
disp('>> projections = k*U;'); projections = k*U; 
disp('>> contour(Xax,Yax,reshape(projections(:,1),length(Yax),length(Xax)));'); 
contour(Xax,Yax,reshape(projections(:,1),length(Yax),length(Xax)));
title('projections of the inputspace on the principal components in feature space');
disp('  (press any key)');
pause



%
% minimize the reconstruction error using the first principal components
%
disp(' ');
disp(' Minimize the reconstruction error using the first principal components');


try
  disp(' Fo every point, the reconstruction point is minimzed using');
  disp(' ----------------------------------------------------------');
  disp(' ');
  disp('>> Xd = denoise_kpca([samplesyin;samplesyang],''RBF_kernel'',sig2,[],''eigs'',5); ');
  Xd = denoise_kpca([samplesyin;samplesyang],'RBF_kernel',sig2,[],'eigs',5); 
  disp('>> plot(Xd(:,1),Xd(:,2),''ko''); '); plot(Xd(:,1),Xd(:,2),'ko');
  disp(' ');
  title('Denoising (''o'') by minimizing the reconstruction error in feature space');
  disp(' ');
  disp(' In the last figure, one can see the original datapoints');
  disp('(''*'') and the reconstructed data (''o'').  ');
  disp(' ');
catch
  disp(' Denoising does not work when the ''fminunc'' function is unavailable ');
end
  disp(' ');
disp('  This  concludes this demo');
hold off